モジュール詳細:紫色暗号

バラは赤い。スミレは青い。こんなジョーク前にも言ったっけ?まぁいいや、ここに暗号があるよ。

モジュールは、3つのディスプレー、キーボード、2つの矢印、及び現在のページを表示するボタン(送信ボタン)で構成されている。

右の矢印を押すと、次のページに移動できる。左の矢印を押すと前のページに移動できる。ページは全部で2ページある。

ページ1には、上のディスプレーに6文字の暗号化された単語、真ん中のディスプレーに6文字のキーワード、下のディスプレーに2桁の数字が表示される。

ページ2には、上のディスプレーに別のキーワードが表示される。

以下のルールに従って単語を解読する。

ステップ1:ポルタ暗号

ここでは、ページ1の上部に表示された暗号化された単語とページ1の真ん中に表示された6文字のキーワード、そして以下のチャートが必要になる。

暗号化された単語の各英字に対して、以下の処理を行う。

  • キーワードの各英字を、以下のチャートの段に使用する。
  • 暗号化された単語のその英字がAからMの間である場合、チャートの列にその英字を使用する。そして、段と列の交点が新たな暗号化された英字となる。
  • そうでない場合、キーワードの英字を同じ段から見つける。その英字の列からチャートのA-M段を参照して示された英字が新たな暗号化された英字となる。

これで、ステップ2で使用する新たな暗号化された単語が手に入る。

ABCDEFGHIJKLM
ABNOPQRSTUVWXYZ
CDOPQRSTUVWXYZN
EFPQRSTUVWXYZNO
GHQRSTUVWXYZNOP
IJRSTUVWXYZNOPQ
KLSTUVWXYZNOPQR
MNTUVWXYZNOPQRS
OPUVWXYZNOPQRST
QRVWXYZNOPQRSTU
STWXYZNOPQRSTUV
UVXYZNOPQRSTUVW
WXYZNOPQRSTUVWX
YZZNOPQRSTUVWXY

暗号化された単語:KVUPEM
キーワード:CENTER

C + K => Y
E + V => G
N + U => B
T + P => G
E + E => T
R + M => U
新たな暗号化された単語:YGBGTU

ステップ2:ルート転置

ここでは、ステップ1で獲得した暗号化された単語とページ1の下に表示された2桁の数字が必要になる。

十の位は暗号のグリッドを定義し、一の位はグリッドの左上の数字を定義する。

十の位が1の場合、上のグリッドを使用する。そうでない場合、下のグリッドを使用する。

###
###
##
##
##

一の位の数字をグリッドの左上のマスに入力する。そして、グリッド上を時計回りに進み、数字を1ずつ増やしつつマスに入力する。数字が6を超える場合、それを1にする。

暗号化された単語の一番目の英字を1と書かれたマスに配置する。その後、二番目の英字を2と書かれたマスに配置する。以降も同様に、暗号化された単語を配置する。

最後に英字を読み順で取得し、新たな暗号化された単語を得る。

暗号化された単語:YGBGTU
1ページ目の下部のディスプレー:12

234
165
GBG
YUT

YGBGTU => GBGYUT

ステップ3:クアグマイア暗号

ここでは、ステップ2で獲得した暗号化された単語、1ページ目の真ん中にある6文字のキーワード、2ページ目の上に表示された単語(4〜8文字)が必要になる。

このステップでは、この暗号に必要な暗号鍵を作成することから始める。

暗号鍵は7段の英字からなる。1段目は常に以下の配列になる。

ABCDEFGHIJKLMNOPQRSTUVWXYZ

上のディスプレーのキーワードを用いて作成するアルファキーが残りの6段になる。

  • 重複する英字の2文字目以降を削除する。
  • アルファベット全体の文字列を取得し、キーワードに表示された英字を削除する。
  • キーワードの末尾にアルファベットの文字列を配置する。これがアルファキーとなる。

アルファキーを1段目の真下に6回コピー&ペーストし、合計が7段になるようにする。

最後に、左端の英字が真ん中のディスプレーの単語になるように、下6つの段をずらす。

真ん中のディスプレーの単語:CENTER
上のディスプレーの単語:PRESSURE

ABCDEFGHIJKLMNOPQRSTUVWXYZ
CDFGHIJKLMNOQTVWXYZPRESUAB
ESUABCDFGHIJKLMNOQTVWXYZPR
NOQTVWXYZPRESUABCDFGHIJKLM
TVWXYZPRESUABCDFGHIJKLMNOQ
ESUABCDFGHIJKLMNOQTVWXYZPR
RESUABCDFGHIJKLMNOQTVWXYZP

暗号化された単語の各英字に対して、以下の手順に従う。

  • 暗号化された単語の英字をその英字と同じ位置の段の中から探す(1段目は段としてカウントされない)。
  • その列の中にある最上段(A–Z)の英字に置き換えることで、復号された英字が得られる。

これで、復号された単語が手に入る。

暗号化された単語:GBGYUT
復号処理は上の表を使用

G => D
B => E
G => T
Y => E
U => C
T => T
復号された単語:DETECT

復号された単語を取得したら、それを送信する。入力を開始すると、全てのディスプレーが暗転し下のディスプレーに入力された文字が表示される。

入力を消去するには、いずれかの矢印をクリックする。ページが移動し、入力した文字列が消去される。6文字を超える入力はできないようになっている。

入力に問題がなければ、「SUB」と書かれたボタンを押して、回答を送信する。ミスが記録された場合、モジュールの最初のページに戻るが、暗号の再生成はされない。